package com.promise.jokerdream.response.parser

import com.promise.jokerdream.response.phone.WulinXmlResponse
import org.jsoup.Jsoup

/**
 * 武林大会XML解析器
 * 专门用于解析武林大会相关的XML数据
 * 基于Jsoup实现
 */
class WulinXmlParser: BaseXmlParser<WulinXmlResponse>() {
    
    /**
     * 解析武林大会XML数据
     * @param xmlString XML字符串
     * @return 解析结果
     */
    fun parseWulinXml(xmlString: String): XmlParseResult<WulinXmlResponse> {
        return parseXml(xmlString)
    }
    
    /**
     * 实现基类的具体解析逻辑
     * @param xmlString XML字符串
     * @return 解析后的武林大会数据
     */
    override fun doParse(xmlString: String): WulinXmlResponse {
        return try {
            val doc = Jsoup.parse(xmlString)
            val divElement = doc.selectFirst("div#id")
            
            if (divElement != null) {
                // 使用html()方法保留HTML结构，然后替换<br/>为换行符
                val html = divElement.html()
                val text = html.replace(Regex("<br\\s*/?>"), "\n")
                
                // 只解析报名状态
                val registrationStatus = parseRegistrationStatus(text)
                
                WulinXmlResponse(
                    actionResult = registrationStatus
                )
            } else {
                WulinXmlResponse(actionResult = "")
            }
        } catch (e: Exception) {
            WulinXmlResponse(actionResult = "")
        }
    }
    
    /**
     * 解析报名状态
     */
    private fun parseRegistrationStatus(text: String): String {
        val regex = Regex("报名状态：(.+?)(?=\\n|$)")
        val match = regex.find(text)
        return match?.groupValues?.get(1)?.trim() ?: ""
    }
}